#ifndef LOG_CUSTOM_TILING_H
#define LOG_CUSTOM_TILING_H

#include "register/tilingdata_base.h"

// 定义命名空间optiling，封装算子分块相关数据结构，避免命名冲突
namespace optiling {
BEGIN_TILING_DATA_DEF(IsRealCustomTilingData)
    // 定义小核（Small Core）处理的数据量（单位：元素数）
    TILING_DATA_FIELD_DEF(uint32_t, smallCoreDataNum);
    // 定义大核（Big Core）处理的数据量（单位：元素数）
    TILING_DATA_FIELD_DEF(uint32_t, bigCoreDataNum);
    // 定义大核最终处理的完整分块（Tile）数量
    TILING_DATA_FIELD_DEF(uint32_t, finalBigTileNum);
    // 定义小核最终处理的完整分块（Tile）数量
    TILING_DATA_FIELD_DEF(uint32_t, finalSmallTileNum);
    // 定义每个分块（Tile）包含的数据量（单位：元素数）
    TILING_DATA_FIELD_DEF(uint32_t, tileDataNum);
    // 定义小核处理的尾块数据量（总数据无法整除分块大小时的剩余部分）
    TILING_DATA_FIELD_DEF(uint32_t, smallTailDataNum);
    // 定义大核处理的尾块数据量（总数据无法整除分块大小时的剩余部分）
    TILING_DATA_FIELD_DEF(uint32_t, bigTailDataNum);
    // 定义尾块的总数量
    TILING_DATA_FIELD_DEF(uint32_t, tailBlockNum);
    //输入数据的类型
    TILING_DATA_FIELD_DEF(uint32_t, dataTypeId);
END_TILING_DATA_DEF;

// 将分块数据结构IsRealCustomTilingData与算子IsRealCustom绑定，注册到框架中
// 使Host侧计算的分块参数能正确传递到Kernel侧
REGISTER_TILING_DATA_CLASS(IsRealCustom, IsRealCustomTilingData)

}  // 闭合命名空间optiling

#endif  // 闭合头文件保护宏LOG_CUSTOM_TILING_H